Object.defineProperty(exports, "__esModule", {
    value: !0
}), exports.default = function(e, t, o, n) {
    function i() {
        function i() {
            r = Number(new Date()), o.apply(a, f);
        }
        var a = this, c = Number(new Date()) - r, f = arguments;
        n && !u && i(), u && clearTimeout(u), void 0 === n && c > e ? i() : !0 !== t && (u = setTimeout(n ? function() {
            u = void 0;
        } : i, void 0 === n ? e - c : e));
    }
    var u, r = 0;
    return "boolean" != typeof t && (n = o, o = t, t = void 0), i.cancel = function() {
        clearTimeout(u);
    }, i;
};